##[group]The deploy tool's tests
npm run test:deploy
##[endgroup]
shell: bash -e /home/runner/_temp/18dfb3fe1be498d6.sh

> test:deploy
> node --test "scripts/deploy/*.test.mjs"

error: no matching package named `base64` found
location searched: crates.io index
required by package `g1t-api v0.1.0 (/home/runner/work/repo/apps/api)`
note: offline mode (via `--offline`) can sometimes cause surprising resolution failures
help: if this error is too confusing you may wish to retry without `--offline`
✔ the manifest matches every wrangler config in the repository (184.083888ms)
✔ every wrangler.jsonc is found, and only checked-in ones (108.899322ms)
✔ problems are found: an unlisted config, a later-stage binding, a wrong database, an unnamed KV (114.939565ms)
✔ stages follow bindings: nothing binds to a unit that ships after it (0.939001ms)
✔ Rust workers build with the shared script and the same wasm-opt level (1.30581ms)
✔ shared crates and packages are read from workspace metadata (5.391733ms)
✔ the runner's image is built from the runner crate and what it uses, on the base its lock names (3.761272ms)
✔ services/runner/base.json records the base its folder builds (75.248136ms)
✔ an image's hash ignores line endings, and its tags say what they are (408.198585ms)
✔ only the lockfile entries the runner is built from name its image (3.177792ms)
✔ the runner's deploy config names its image by reference, beside its wrangler.jsonc (90.676693ms)
✔ the registry is asked for an image's manifest, without Docker (3.686902ms)
✔ a push counts only when it ends with a digest, and is tried again (2.228051ms)
✔ a static Linux binary is told from a dynamic one (2.314371ms)
﹣ path dependencies agree with Cargo's own resolved graph (3468.176234ms) # cargo metadata could not resolve offline
✔ every import that leaves a unit's folder is covered by its dependencies or inputs (233.595832ms)
✔ a shared crate's change reaches every unit built from it, and no other (1.67368ms)
✔ a shared package's change reaches what imports it (0.551931ms)
✔ own folders, declared inputs and root files (1.944171ms)
✔ a Cargo.lock change reaches only crates that use what changed (1.35257ms)
✔ a package-lock change reaches through workspace links (1.918531ms)
✔ decide: changed units deploy, others wait, unknown ones deploy (2.489562ms)
✔ decide: --force deploys unchanged units; a commit missing from history deploys (0.5189ms)
✔ decide: Cargo.lock counts only where it reaches (1.237601ms)
✔ decide: the runner's image rebuilds only when what it is built from changed (44.543891ms)
✔ the plan as data: migrations, and each stage's units in jobs that share a build (6.856703ms)
✔ units are picked by short name, folder or Worker name (3.410072ms)
✔ a CI job installs only what its units need (2.945822ms)
✔ a deploy is annotated with its commit, and read back (0.94767ms)
✔ the live commit: the live version's, looking through secret changes (1.525711ms)
✔ Wrangler's output: pending migrations and the version a deploy made (1.25269ms)
✔ the pool runs everything, no more than its limit at once (343.805304ms)
✔ self-hosting builds every Rust service the manifest says it runs (7.395073ms)
✔ docs/SELF_HOSTING.md's table names every unit (30.025175ms)
✔ resolveStack works on a manifest with no workspace crates or packages (24.837722ms)
✔ decide: a commit older than what runs is never deployed by accident, even forced; --rollback means it (10.582105ms)
✔ a deploy by hand reports to the repository on g1t, and a workflow's does not (18.709169ms)
scheduler: g1t-webhooks (* * * * *) is still running from the last time; skipped
scheduler: g1t-webhooks (* * * * *): 200 {"outcome":"exception"}
✔ fields read numbers, ranges, lists and steps (5.172503ms)
✔ the services' crons match when hosted g1t's would fire (8.846814ms)
✔ what is due is each matching cron of each service (2.247741ms)
✔ a run asks Wrangler for the handler, and a slow one is not doubled (252.733461ms)
✔ a deploy is announced to status.g1t.sh with the token, and without one nothing is sent (191.076811ms)
✔ an announcement that fails is a warning, never a failed deploy (1.425401ms)
✔ the stages run inside the window: started before, finished after, even when they throw; a dry run says nothing (2.494381ms)
✔ deploy.mjs announces every deploy, and the workflow passes it the token (1.055401ms)
ℹ tests 45
ℹ suites 0
ℹ pass 44
ℹ fail 0
ℹ cancelled 0
ℹ skipped 1
ℹ todo 0
ℹ duration_ms 7171.89889
